package LearnAlgorithm.c_递归and查找排序;

/**
调整数组顺序使奇数位于偶数前面:输入一个整数数组,调整数组
中数字的顺序,使得所有奇数位于数组的前半部分,所有偶数位于
数组的后半部分。要求时间复杂度为O(n)。
 * @author wuqiu
 *
 */
public class n奇数左偶数右by快速排序思想 {
	public static void main(String[] args) {
		int[] arr = new int[] {8,6,4,2,9,7,5,3};
		Quick(arr, 0, arr.length-1);
		for (int i = 0; i < arr.length; i++) {
			System.out.print(arr[i] + " ");
		}
	}
	
	public static void Quick(int[] arr, int p, int r) {
		while (p <= r) {
			while (p <= r && (arr[p] & 1) == 1) {
				p++;
			}
			while (p <= r && (arr[r] & 1) == 0) {
				r--;
			}
			swap(arr, p, r);
		}
	}
	
	public static void swap(int[] arr, int i, int j) {
		int tmp = arr[i];
		arr[i] = arr[j];
		arr[j] = tmp;
	}
}
